"""
@Author  : 康帅
@Time    : 2021/3/10 16:18
@Function: 监听模式
"""

"""
监听模式应用场景：
1.对一个对象状态或数据的更新需要其他对象同步更新，或者一个对象的更新需要依赖另一个对象的更新
2.对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节，如消息推送

设计要点：
1.要明确谁是观察者谁是被观察者，只要明白谁是应该关注的对象，问题也就明白了。
一般观察者与被观察者之间是多对一的关系，一个被观察对象可以有多个监听对象（观察者）。
如一个编辑框，有鼠标点击的监听者，也有键盘的监听者，还有内容改变的监听者。
2.Observable 在发送广播通知的时候，无须指定具体的 Observer,Observer 可以自己决定是否订阅Subject的通知。
3.被观察者至少需要有三个方法：添加监听者、移除监听者、通知Observer的方法。
观察者至少要有一个方法：更新方法，即更新当前的内容，做出相应的处理。
4.加监听者和移除监听者在不同的模型称谓中可能会有不同命名，如在观察者模型中一般是addObserver/removeObserver；
在源/监听器（Source/Listener）模型中一般是attach/detach，应用在桌面编程的窗口中还可能是attachWindow/detachWindow或Register/UnRegister。
不要被名称弄迷糊了，不管它们是什么名称，其实功能都是一样的，就是添加或删除观察者。
"""
